/*
java数据类型:1.多了byte类型
           2.char占了2个字节
           3.boolean只有两个取值: true和false
           4.每个类型都有一个加大版的包装类(首字母大写)。除了Integer(int类型)和Character(char类型)
           5.在java中，直接赋值不能超过该数据类型所能表示的最大范围   byte：-128~127  byte a=129;error
*/
public class JavaDataType {
    public static void main1(String[] args) {
        //byte占一个字节
        byte a=12;
        System.out.println(a);
        System.out.println(Byte.MAX_VALUE);
        System.out.println(Byte.MIN_VALUE);
    }



    public static void main2(String[] args) {
        short a=10;
        System.out.println(a);
        System.out.println(Short.MAX_VALUE);
        System.out.println(Short.MIN_VALUE);
    }





    public static void main3(String[] args) {
        long a=10L;      //长整形数字后面加一个L
        System.out.println(a);
        System.out.println(Long.MAX_VALUE);
        System.out.println(Long.MIN_VALUE);
    }




    // main 直接生成一个main方法
    public static void main4(String[] args) {
        //sout 直接生成一个输出函数
        final int a=10;    //final修饰常量,a不能被修改

        System.out.println(a);
        //Integer  -包装类 int的plus版本
        System.out.println(Integer.MAX_VALUE);
        System.out.println(Integer.MIN_VALUE);
    }






    public static void main5(String[] args) {
        double a=1.0;
        System.out.println(a);
        System.out.printf("%f\n",a);
        System.out.printf("%.1f\n",a);
//        System.out.println(Double.MAX_VALUE);
//        System.out.println(Double.MIN_VALUE);
        double b=2.0;
        System.out.println(a/b);   //0.5  int a/b=0;
        System.out.println(b*b);
    }




    public static void main6(String[] args) {
        //float类型不加f就表示double类型
        float a=12.5f;
        System.out.println(a);
    }




    public static void main7(String[] args) {
        //char类型有2个字节   不能赋值负数
        char ch1='a';
        System.out.println(ch1);
        char ch2='男';
        System.out.println(ch2);
        char ch3=48;
        System.out.println(ch3);

    }




    public static void main8(String[] args) {
        //在java中真为true ，假为false  ,没有明确的大小
        boolean a =true;
        System.out.println(a);
    }

//--------------------------------------------------------------------------------------------------------------------\\


    /*
        类型转换
    */
    public static void main9(String[] args) {
        int a=10;
        long b=20L;
        a=(int)b;//强制类型转换  long表示的范围比int大
        a=10;
        b=a;
        System.out.println(a);
        System.out.println(b);

        int c=10;
        float d=12.5f;
        c=(int)d;   //float表示的数据宽度更大 有风险就是小数没有了
        System.out.println(c);
        System.out.println(d);
    }



    /*
        类型提升
     */
    public static void main10(String[] args) {
        int a=10;
        long b=20L;
        int c=(int)(a+b);
        long d=a+b;
        System.out.println(c);
        System.out.println(d);
    }




    public static void main11(String[] args) {
        byte a=10;
        byte b=20;
        byte c=(byte)(a+b);   //小于4个字节的数据在进行运算的时候，会提升为4个字节
        int d=a+b;
        System.out.println(c);
        System.out.println(d);
    }





    //String类型
    public static void main12(String[] args) {
        //两个字符串相加就是拼接的意思
        String str1="hello";
        String str2="world";
        System.out.println(str1+str2);

        //当一个字符串拼接任意一个数据类型,结果还是字符串
        int a=10;
        int b=20;
        System.out.println("a="+a);
        System.out.println("b="+b);
        System.out.println("a+b="+a+b);   //等价与“a+b=”+ a的值组成一个字符串  再加上b的值之后连成了一个字符串
        System.out.println("a+b="+(a+b));  //等价与“a+b=”+ a+b的值连成了一个字符串
        System.out.println(a+b+"是a+b的和");
    }




    public static void main13(String[] args) {
        int a=12345;
        String ret=String.valueOf(a);   //把一个整数变成字符串
        System.out.println(ret+78+8);
        System.out.println(ret+(78+8));

        String str="123456";
        int tmp=Integer.valueOf(str);  //把一个字符串转换为一个整形
        int tmp2=Integer.parseInt(str); //与valueof相同，因为valueof中有一个parseint这个方法

        int b=10;
        System.out.println(tmp+b);
    }

    public static void main(String[] args) {
        int[] array=new int[31];
        array[0]=1;
        array[1]=1;
        for (int i = 2; i < array.length; i++) {
            array[i]=array[i-1]+array[i-2];
        }
        System.out.println(array[30]);
    }
}
